(function () {

    // abstract 抽象类，只能继承，无法创建实例
    // 可以添加抽象方法
    abstract class Animal {
        name: string

        // 构造函数
        // 对象创建时调用
        constructor(name: string) {
            // this 表示当前类的实例
            this.name = name
        }

        // 定义抽象方法
        // 子类必须重写该方法
        abstract sayHello(): void
    }

    class Dog extends Animal {

        sayHello() {
            console.log('Dog叫。。。')
        }
    }

    const dog = new Dog('旺财')
    console.log(dog)
    dog.sayHello()

    // const a = new Animal('xxx')
    // console.log(a)

})();
